perm filename EXERPT[8,ALS] blob sn#046197 filedate 1973-06-05 generic text, type T, neo UTF8
00010	INTEGER PROCEDURE UPDATE;
00020	BEGIN "UPDATE"
00030	
00040	COMMENT This procedure both smooths and spreads the output values
00050	  as reported in the last 3 bits in the values stored in TABLES.
00060	  This output is reported in addition to the actual ratio output
00070	  which is now moved over 3 bits.
00080	  This routine works only for P tables;
00090	
00100	COMMENT SIG must be fixed before this can be used;
00110	
00120	INTEGER I,J,K,L,M,N,P,Q,Z;
00130	INTEGER GOOD,BAD,SUM,PLACE;
00140	INTEGER ARRAY PAD[0:64];
00150	
00160	
00170	FOR I←STXX+10 STEP 74 UNTIL STX-64 DO BEGIN
00180	  P←0;
00190	
00200	  FOR J←0 STEP 1 UNTIL 7 DO
00210	    FOR K←0 STEP 1 UNTIL 7 DO BEGIN
00220	      N←J*8+K;
00230	      GOOD←POINT(15,TABLES[I+N],29);
00240	      L←LDB(GOOD);
00250	      BAD←POINT(15,TABLES[I+N],14);
00260	      Z←L+LDB(BAD);
00270	      PLACE←POINT(3,TABLES[I-9],5);
00280	      IF PLACE=2 THEN BEGIN
00290	
00300	      L←L LSH 3; Z←Z LSH 3;
00310	
00320	      IF J>0 THEN BEGIN
00330	      GOOD←POINT(15,TABLES[I+N-8],29); L←L+LDB(GOOD);
00340	      BAD←POINT(15,TABLES[I+N-8],14); Z←Z+LDB(BAD)+LDB(GOOD); END;
00350	
00360	      IF J<7 THEN BEGIN
00370	      GOOD←POINT(15,TABLES[I+N+8],29); L←L+LDB(GOOD);
00380	      BAD←POINT(15,TABLES[I+N+8],14); Z←Z+LDB(BAD)+LDB(GOOD); END;
00390	
00400	      IF K>0 THEN BEGIN
00410	      GOOD←POINT(15,TABLES[I+N-1],29); L←L+LDB(GOOD);
00420	      BAD←POINT(15,TABLES[I+N-1],14); Z←Z+LDB(BAD)+LDB(GOOD); END;
00430	
00440	      IF K<7 THEN BEGIN
00450	      GOOD←POINT(15,TABLES[I+N+1],29); L←L+LDB(GOOD);
00460	      BAD←POINT(15,TABLES[I+N+1],14); Z←Z+LDB(BAD)+LDB(GOOD); END;
00470	
00480	      END;
00490	
00500	      M←(L LSH 8)/Z;
00510	
00520	      Q←Z LSH -3;
00530	COMMENT      IF M≥64 THEN IF M<192 THEN P←P+Q;
00540	      P←P+Q;
00550	      PAD[N]←(M LSH 27)+(Q LSH 6)+N;
00560	      M←M LSH -5; IF M>7 THEN M←7;
00570	      SUM←POINT(30,TABLES[I+N],29);
00580	      TABLES[I+N]←(LDB(SUM) LSH 6)+(M LSH 3);
00590	    END;
00600	
00610	  FOR J←0 STEP 1 UNTIL 62 DO
00620	    FOR K←J+1 STEP 1 UNTIL 63 DO 
00630	      IF (PAD[J]>PAD[K]) THEN BEGIN
00640	        Z←PAD[J]; PAD[J]←PAD[K]; PAD[K]←Z; END;
00650	
00660	  K←P/8; L←0; M←0;
00670	
00680	  FOR J←0 STEP 1 UNTIL 63 DO BEGIN
00690	    PLACE←POINT(6,PAD[J],35);
00700	    N←LDB(PLACE);
00710	    SUM←POINT(33,TABLES[I+N],32);
00720	    P←POINT(8,PAD[J],8);
00730	COMMENT    IF P<64 THEN TABLES[I+N]←(LDB(SUM) LSH 3)
00740	COMMENT   ELSE IF P≥192 THEN TABLES[I+N]←(LDB(SUM) LSH 3)+7
00750	COMMENT    ELSE BEGIN
00760	      TABLES[I+N]←(LDB(SUM) LSH 3)+L;
00770	      SUM←POINT(20,PAD[J],29);
00780	      M←M+LDB(SUM); 
00790	      IF M>K THEN BEGIN
00800	        M←M-K; L←L+1; IF L≥8 THEN L←7; END;
00810	COMMENT    END;
00820	  END;
00830	
00840	END;
00850	
00860	END "UPDATE";
00870